import java.util.ArrayList;
import java.util.List;

/*
* 首先对项目 规律/特性 进行分析：
*   1、第n层有n个数;
*   2、每一层第一个数和最后一个数都是1
*   3、第n层的第m个数等于第（n-1）层第（m-1）个数和第m个数之和*/
public class Solution {

    public static List<List> YHtriangle(int numRows){
        List<List> YHtriangle = new ArrayList<>();
        //生成每一层
        for (int n = 1; n <= numRows; n++) {
            //生成每一层的数
            //如何获取到上一层的数呢？
            List<Integer> YH = new ArrayList<>();
            for (int m = 0;m < n; m++){
                //特殊情况需要处理：每层两端的数
                //在第一层
                /*if (n == 1){
                    YH.add(1);
                    continue;
                }*/
                //在每一层的首尾两个位置
                if (m == 0 || m == (n-1)){
                    YH.add(1);
                }else {
                    //n = 3
                    /*int a = (int) YHtriangle.get((n - 1)-1).get(m - 1);
                    int b = (int) YHtriangle.get((n - 1)-1).get(m);*/
                    YH.add((int) YHtriangle.get((n - 1)-1).get(m - 1) + (int) YHtriangle.get((n - 1)-1).get(m));
                }
            }
            YHtriangle.add(YH);
        }
        return YHtriangle;
    }
    public static void main(String[] args) {
        System.out.println(Solution.YHtriangle(5));
        System.out.println(Solution.YHtriangle(2));
        System.out.println(Solution.YHtriangle(1));
    }
}
